/* 
 * File:   Logger.h
 * Author: Gab'z
 *
 * Created on 8 juin 2012, 13:45
 */

#ifndef LOGGER_H
#define	LOGGER_H
#include <string>

namespace calculator {

    /**
     * Logger utilisé par le système de journalisation.
     * Il existe au maximum un Logger par classe.
     */
    class Logger {
        friend class LoggerManager;

    public:
        void trace(const std::string& message);
        void debug(const std::string& message);
        void error(const std::string& message);

        const std::string getClassname() const {
            return _classname;
        }

    private:
        /**
         * Le nom de la classé journalisée
         */
        const std::string _classname;

        /** 
         * Constructeur de Logger.
         * Utilisé par le LoggerManager uniquement
         * @param classname le nom de la classe pour laquelle on souhaite journaliser.
         */
        Logger(const std::string& classname);
       
        /** 
         * Destructeur de Logger.
         * Utilisé par le LoggerManager uniquement
         */
        virtual ~Logger();
    };
}
#endif	/* LOGGER_H */

